package com.awesome.webviewdemo;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;

import com.awesome.common.util.log.ShowLogUtil;
import com.google.gson.Gson;

import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private WebView mWebView;
    private EditText mEtContent;
    private Button mBtnSend;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        useWebView();
    }

    private void initView() {
        mWebView = findViewById(R.id.webView);
        mEtContent = findViewById(R.id.et_content);
        mBtnSend = findViewById(R.id.btn_send);
    }

    private void useWebView() {
        //允许WebView加载js代码
        mWebView.getSettings().setJavaScriptEnabled(true);
        // 添加js接口
        /**
         * obj:Android端，编写js方法的类
         * name:js端，调用这些js方法的，给它重命名
         */
        mWebView.addJavascriptInterface(new WebInterface(), "AwesomeWebView");
        mWebView.loadUrl("file:///android_asset/index.html");
        // Android执行js的方法。
        // window.js定义的方法名（方法的参数）
        // 如window.remote(str)
        mBtnSend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                String str = mEtContent.getText().toString();
                String str = getJson();
                mWebView.loadUrl("javascript:if(window.remote){window.remote('" + str + "')}");
            }
        });
        //可以使用evaluateJavascript，Android执行js的方法。
    }

    /**
     * 构建Json
     * @return
     */
    private String getJson() {
        Person person = new Person("Jane", 29);
        Person.Account account1 = new Person.Account("ICBC", 20000);
        Person.Account account2 = new Person.Account("CCB", 10000);
        List<Person.Account> accountList = new ArrayList<>();
        accountList.add(account1);
        accountList.add(account2);
        person.setAccounts(accountList);
        String[] remarks = {"1","什么"};
        person.setRemarks(remarks);
        return new Gson().toJson(person);
    }

//    private String parseJson(){
//
//    }
}